uniapp和nodejs的移动商城 您所在的位置:网站首页 uniapp vue版本 uniapp和nodejs的移动商城

uniapp和nodejs的移动商城

2023-02-09 10:07| 来源: 网络整理| 查看: 265

一:新建项目及相关准备

1.添加公共的css文件。

2.在iconfont网站找需要用的图标,引入。

这里会遇到图标不显示的问题,查了很多资料,发现这个文章有用uniapp引入iconfont_旭陌小生的博客-CSDN博客_uniapp 引入iconfont

二:顶部的开发

使用app-plus配置,里面的titleNView,配置顶部导航(以下是titleNView的配置项)

具体配置,利用浮动配置一左一右两个图片,text是阿里图标中的unicode码

三:轮播图组件

直接输入swiper就会快捷生成swiper,当图片添加进去后,需要设置图片宽度为100%。但是swiper组件中高度是默认的,所以swiper高度要与轮播图图片一致,才能完全显示。

顶部滑动

效果是随着顶部的点击,下面也显示出对应的内容

 首先渲染数据

 

 此时还无法实现滚动,需要给父元素设定宽高,并不允许换行,子元素转换成行内块元素

选定谁谁高亮效果

首先定义一个索引 ,如果索引与当前的序号相同,则不变。如果不同,则改为选中的状态

 下一步,实现顶部滑块的点击,使得下面内容随之改变

1.首先下面放一个swiper,里面写上每个滑块对应的内容

然后使用change事件,当curren改变时会调用change事件,此时我们把change绑定为上面滑块的index,当上面滑块index改变时就会触发下面的change事件。

 

 当下面的内容滚动时,上面滑块也会跟着变化,但是不会动态变化,就是内容不会滑动。

 给上面的滑块设定一个scroll-into-view,且设置id(id不能以数字开头)

 当滑块变化时设置对应的index

此时上面的滑块就会跟着变化 。

当我们将之前写好的组件放入swiper中时,会发现只显示了一小部分内容,原因是swiper有默认的高度。

解决办法:在onReady中获取节点的高度。

给swiper的高度赋值,即可显示完整。

 搭建node

首先全局安装

npm install express-generator -g

 接着进入app中安装

express --view=ejs server

然后根据提示安装

 安装后启动后端(npm start),如图是成功的 

在server文件夹下的router里写接口

写完重启服务器,即可访问到数据

 前端访问后端的地址,在onLoad函数访问

 但此时并没有输出,因为我们是本地测试,不是访问远程服务器的接口,所以需要

1:电脑手机同一个wifi。

2不能用localhost,改为ip

查找电脑的ip,将localhost替换。

此时我们也能得到数据a

 

可以成功请求到数据,所以我们将需要的数据写到这个路径下

然后将请求数据的方法封装

 将原有的topBar删除,使用接口赋值

再定义一个新数据newTopBar来对应渲染不同的Tabbar

 传递数据并渲染

 但是最后却会有多个“猜你喜欢”

 解决办法:使用template标签,把Card与另一个组件放一起,且Card必须放在下面,还有判断条件需放在template中

旧写法

 正确写法

修改可视区高度问题

下面这种api已经无法获取高度,因为这个类里面有组件且有数据渲染

 

因此不用这个方法,使用scroll-view标签

用另一个api来测试可视区域的高,用可视区的高减去滑块高

写接口传数据

根据不同滑块显示不同数据

 每次滑动数据添加一个判断

 上拉加载更多

定义一个变量,初始值为‘上拉加载更多’,当触底后,调用函数

 传入函数并判断执行

 封装request

在request.js文件中对请求进行封装

export default{ common:{ baseUrl:'http://192.168.43.243:3000/api', data:{}, header:{ "Content-Type":"application/json", "Content-Type":"application/x-www-form-urlencoded", }, method:"GET", dataType:'json' }, request(options={}){ uni.showLoading({ title:'加载中' }) // console.log(1); options.url=this.common.baseUrl+options.url; options.data=options.data||this.common.data; options.header=options.header||this.common.header; options.method=options.method||this.common.method; options.dataType=options.dataType||this.common.dataType; return new Promise((res,rej)=>{ uni.request({ ...options, success: (result) => { if(result.statusCode!=200){ return rej() } let data=result.data.data; res(data) // 请求成功后取消加载中 setTimeout(function(){ uni.hideLoading(); },500); } }) }) } }

 然后在组件中引入

 搜索功能

点击标题栏进入搜索,要利用到页面生命周期中的onNavigationBarButtonTap

 根据我们按钮的位置来跳转

原生搜索框

接着是搜索页下面的开发,略

 点击搜索跳转

 搜索结果页面排序

 1.点击谁谁高亮

 箭头高亮以及翻转箭头

 

搜索

顶栏搜索框

 软键盘搜索按钮

 

 最近搜索

 

 搜索记录本地存储

清除搜索记录

搜索词传值

在onLoad可以读取到传递的值

安装数据库

 建表写数据。。(略)

连接数据库

获取接口的数据

根据搜索结果渲染数据

 根据属性排序

给选项加上key

再使用计算属性,先获取当前的对象,根据status的不同传递desc或asc给后台

 

商品详情页

   VueX状态管理:

store目录下的index.js文件

 引入cart仓库

在main.js中挂载

 引入仓库里的数据

 全选和全不选

添加全选事件

放入仓库的action中

 然后是在store中的操作

 

 

最后在页面渲染即可

 单选:

 

 

 此时i,实现了单选功能。且点击全选后,单击某一个选中的商品,也能取消全选。(因为之前写过getter,类似computed的功能)

 删除

 

 

 

选择城市的插件

mpvue-picker - DCloud 插件市场

 下载到component的uni下,并在相关页面引入

 引入相关方法

此时三级联动就能显示

 点击确定后返回相关城市的值

 把值赋给city并显示

 新增收货地址

将地址存入vuex中

 写数据

 保存地址

 新增地址

往list数组里插入数据

 提交的数据是通过双向绑定的

点击修改地址

修改地址与新增地址的跳转路径一样,之后跳转的页面根据有无参数来判断是从哪里跳过来的

 如果是从修改按钮跳转,则重新渲染数据

 点击保存,判断是否是修改数据,如果是,传递数据给仓库更新数据

 

 

 我的订单页面

未完,待续



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有